<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html" charset="UTF-8">
<title>PngReaderApng (PNGJ 2.1.1-SNAPSHOT API)</title>
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
</head>
<body>
<script type="text/javascript"><!--
    if (location.href.indexOf('is-external=true') == -1) {
        parent.document.title="PngReaderApng (PNGJ 2.1.1-SNAPSHOT API)";
    }
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top">
<!--   -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/PngReaderApng.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../ar/com/hjg/pngj/PngReader.html" title="class in ar.com.hjg.pngj"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../ar/com/hjg/pngj/PngReaderByte.html" title="class in ar.com.hjg.pngj"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?ar/com/hjg/pngj/PngReaderApng.html" target="_top">Frames</a></li>
<li><a href="PngReaderApng.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field_summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field_detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">ar.com.hjg.pngj</div>
<h2 title="Class PngReaderApng" class="title">Class PngReaderApng</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li><a href="../../../../ar/com/hjg/pngj/PngReader.html" title="class in ar.com.hjg.pngj">ar.com.hjg.pngj.PngReader</a></li>
<li>
<ul class="inheritance">
<li><a href="../../../../ar/com/hjg/pngj/PngReaderByte.html" title="class in ar.com.hjg.pngj">ar.com.hjg.pngj.PngReaderByte</a></li>
<li>
<ul class="inheritance">
<li>ar.com.hjg.pngj.PngReaderApng</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>public class <span class="strong">PngReaderApng</span>
extends <a href="../../../../ar/com/hjg/pngj/PngReaderByte.html" title="class in ar.com.hjg.pngj">PngReaderByte</a></pre>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field_summary">
<!--   -->
</a>
<h3>Field Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Field and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected <a href="../../../../ar/com/hjg/pngj/chunks/PngChunkACTL.html" title="class in ar.com.hjg.pngj.chunks">PngChunkACTL</a></code></td>
<td class="colLast"><code><strong><a href="../../../../ar/com/hjg/pngj/PngReaderApng.html#actlChunk">actlChunk</a></strong></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected int</code></td>
<td class="colLast"><code><strong><a href="../../../../ar/com/hjg/pngj/PngReaderApng.html#frameNum">frameNum</a></strong></code>
<div class="block">Current frame number (reading or read).</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="fields_inherited_from_class_ar.com.hjg.pngj.PngReader">
<!--   -->
</a>
<h3>Fields inherited from class&nbsp;ar.com.hjg.pngj.<a href="../../../../ar/com/hjg/pngj/PngReader.html" title="class in ar.com.hjg.pngj">PngReader</a></h3>
<code><a href="../../../../ar/com/hjg/pngj/PngReader.html#chunkseq">chunkseq</a>, <a href="../../../../ar/com/hjg/pngj/PngReader.html#imgInfo">imgInfo</a>, <a href="../../../../ar/com/hjg/pngj/PngReader.html#imlinesSet">imlinesSet</a>, <a href="../../../../ar/com/hjg/pngj/PngReader.html#interlaced">interlaced</a>, <a href="../../../../ar/com/hjg/pngj/PngReader.html#MAX_BYTES_METADATA_DEFAULT">MAX_BYTES_METADATA_DEFAULT</a>, <a href="../../../../ar/com/hjg/pngj/PngReader.html#MAX_CHUNK_SIZE_SKIP">MAX_CHUNK_SIZE_SKIP</a>, <a href="../../../../ar/com/hjg/pngj/PngReader.html#MAX_TOTAL_BYTES_READ_DEFAULT">MAX_TOTAL_BYTES_READ_DEFAULT</a>, <a href="../../../../ar/com/hjg/pngj/PngReader.html#metadata">metadata</a>, <a href="../../../../ar/com/hjg/pngj/PngReader.html#rowNum">rowNum</a>, <a href="../../../../ar/com/hjg/pngj/PngReader.html#streamFeeder">streamFeeder</a></code></li>
</ul>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_summary">
<!--   -->
</a>
<h3>Constructor Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><strong><a href="../../../../ar/com/hjg/pngj/PngReaderApng.html#PngReaderApng(java.io.File)">PngReaderApng</a></strong>(<a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io">File</a>&nbsp;file)</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colOne"><code><strong><a href="../../../../ar/com/hjg/pngj/PngReaderApng.html#PngReaderApng(java.io.InputStream)">PngReaderApng</a></strong>(<a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/io/InputStream.html?is-external=true" title="class or interface in java.io">InputStream</a>&nbsp;inputStream)</code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method_summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../ar/com/hjg/pngj/PngReaderApng.html#advanceToFrame(int)">advanceToFrame</a></strong>(int&nbsp;frame)</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected <a href="../../../../ar/com/hjg/pngj/ChunkSeqReaderPng.html" title="class in ar.com.hjg.pngj">ChunkSeqReaderPng</a></code></td>
<td class="colLast"><code><strong><a href="../../../../ar/com/hjg/pngj/PngReaderApng.html#createChunkSeqReader()">createChunkSeqReader</a></strong>()</code>
<div class="block">called on construction time.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../ar/com/hjg/pngj/PngReaderApng.html#end()">end</a></strong>()</code>
<div class="block">Reads till end of PNG stream and call <tt>close()</tt>
 
 This should normally be called after reading the pixel data, to read the trailing chunks and close the stream.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><strong><a href="../../../../ar/com/hjg/pngj/PngReaderApng.html#getApngNumFrames()">getApngNumFrames</a></strong>()</code>
<div class="block">Only counts true animation frames.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><strong><a href="../../../../ar/com/hjg/pngj/PngReaderApng.html#getApngNumPlays()">getApngNumPlays</a></strong>()</code>
<div class="block">0 if it's to been played infinitely.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../ar/com/hjg/pngj/chunks/PngChunkFCTL.html" title="class in ar.com.hjg.pngj.chunks">PngChunkFCTL</a></code></td>
<td class="colLast"><code><strong><a href="../../../../ar/com/hjg/pngj/PngReaderApng.html#getFctl()">getFctl</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><strong><a href="../../../../ar/com/hjg/pngj/PngReaderApng.html#getFrameNum()">getFrameNum</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../ar/com/hjg/pngj/PngReaderApng.html#hasExtraStillImage()">hasExtraStillImage</a></strong>()</code>
<div class="block">True if it has a default image (IDAT) that is not part of the animation.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../ar/com/hjg/pngj/PngReaderApng.html#hasMoreRows()">hasMoreRows</a></strong>()</code>
<div class="block">True if last row has not yet been read</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../ar/com/hjg/pngj/PngReaderApng.html#isApng()">isApng</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../ar/com/hjg/pngj/IImageLine.html" title="interface in ar.com.hjg.pngj">IImageLine</a></code></td>
<td class="colLast"><code><strong><a href="../../../../ar/com/hjg/pngj/PngReaderApng.html#readRow()">readRow</a></strong>()</code>
<div class="block">Reads next row.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../ar/com/hjg/pngj/IImageLine.html" title="interface in ar.com.hjg.pngj">IImageLine</a></code></td>
<td class="colLast"><code><strong><a href="../../../../ar/com/hjg/pngj/PngReaderApng.html#readRow(int)">readRow</a></strong>(int&nbsp;nrow)</code>
<div class="block">The row number is mostly meant as a check, the rows must be called in ascending order (not necessarily consecutive)</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../ar/com/hjg/pngj/IImageLineSet.html" title="interface in ar.com.hjg.pngj">IImageLineSet</a>&lt;? extends <a href="../../../../ar/com/hjg/pngj/IImageLine.html" title="interface in ar.com.hjg.pngj">IImageLine</a>&gt;</code></td>
<td class="colLast"><code><strong><a href="../../../../ar/com/hjg/pngj/PngReaderApng.html#readRows()">readRows</a></strong>()</code>
<div class="block">Reads all rows in a ImageLineSet This is handy, but less memory-efficient (except for interlaced)</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../ar/com/hjg/pngj/IImageLineSet.html" title="interface in ar.com.hjg.pngj">IImageLineSet</a>&lt;? extends <a href="../../../../ar/com/hjg/pngj/IImageLine.html" title="interface in ar.com.hjg.pngj">IImageLine</a>&gt;</code></td>
<td class="colLast"><code><strong><a href="../../../../ar/com/hjg/pngj/PngReaderApng.html#readRows(int, int, int)">readRows</a></strong>(int&nbsp;nRows,
        int&nbsp;rowOffset,
        int&nbsp;rowStep)</code>
<div class="block">Reads a subset of rows.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../ar/com/hjg/pngj/PngReaderApng.html#readSkippingAllRows()">readSkippingAllRows</a></strong>()</code>
<div class="block">Reads all the (remaining) file, skipping the pixels data.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_ar.com.hjg.pngj.PngReaderByte">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;ar.com.hjg.pngj.<a href="../../../../ar/com/hjg/pngj/PngReaderByte.html" title="class in ar.com.hjg.pngj">PngReaderByte</a></h3>
<code><a href="../../../../ar/com/hjg/pngj/PngReaderByte.html#readRowByte()">readRowByte</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_ar.com.hjg.pngj.PngReader">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;ar.com.hjg.pngj.<a href="../../../../ar/com/hjg/pngj/PngReader.html" title="class in ar.com.hjg.pngj">PngReader</a></h3>
<code><a href="../../../../ar/com/hjg/pngj/PngReader.html#addChunkToSkip(java.lang.String)">addChunkToSkip</a>, <a href="../../../../ar/com/hjg/pngj/PngReader.html#close()">close</a>, <a href="../../../../ar/com/hjg/pngj/PngReader.html#createLineSet(boolean, int, int, int)">createLineSet</a>, <a href="../../../../ar/com/hjg/pngj/PngReader.html#dontSkipChunk(java.lang.String)">dontSkipChunk</a>, <a href="../../../../ar/com/hjg/pngj/PngReader.html#getChunkseq()">getChunkseq</a>, <a href="../../../../ar/com/hjg/pngj/PngReader.html#getChunksList()">getChunksList</a>, <a href="../../../../ar/com/hjg/pngj/PngReader.html#getChunksList(boolean)">getChunksList</a>, <a href="../../../../ar/com/hjg/pngj/PngReader.html#getCurImgInfo()">getCurImgInfo</a>, <a href="../../../../ar/com/hjg/pngj/PngReader.html#getImgInfo()">getImgInfo</a>, <a href="../../../../ar/com/hjg/pngj/PngReader.html#getMetadata()">getMetadata</a>, <a href="../../../../ar/com/hjg/pngj/PngReader.html#getSimpleDigestHex()">getSimpleDigestHex</a>, <a href="../../../../ar/com/hjg/pngj/PngReader.html#isInterlaced()">isInterlaced</a>, <a href="../../../../ar/com/hjg/pngj/PngReader.html#loadAllInterlaced(int, int, int)">loadAllInterlaced</a>, <a href="../../../../ar/com/hjg/pngj/PngReader.html#prepareSimpleDigestComputation()">prepareSimpleDigestComputation</a>, <a href="../../../../ar/com/hjg/pngj/PngReader.html#readFirstChunks()">readFirstChunks</a>, <a href="../../../../ar/com/hjg/pngj/PngReader.html#setChunkLoadBehaviour(ar.com.hjg.pngj.chunks.ChunkLoadBehaviour)">setChunkLoadBehaviour</a>, <a href="../../../../ar/com/hjg/pngj/PngReader.html#setChunksToSkip(java.lang.String...)">setChunksToSkip</a>, <a href="../../../../ar/com/hjg/pngj/PngReader.html#setCrcCheckDisabled()">setCrcCheckDisabled</a>, <a href="../../../../ar/com/hjg/pngj/PngReader.html#setLineSetFactory(ar.com.hjg.pngj.IImageLineSetFactory)">setLineSetFactory</a>, <a href="../../../../ar/com/hjg/pngj/PngReader.html#setMaxBytesMetadata(long)">setMaxBytesMetadata</a>, <a href="../../../../ar/com/hjg/pngj/PngReader.html#setMaxTotalBytesRead(long)">setMaxTotalBytesRead</a>, <a href="../../../../ar/com/hjg/pngj/PngReader.html#setShouldCloseStream(boolean)">setShouldCloseStream</a>, <a href="../../../../ar/com/hjg/pngj/PngReader.html#setSkipChunkMaxSize(long)">setSkipChunkMaxSize</a>, <a href="../../../../ar/com/hjg/pngj/PngReader.html#toString()">toString</a>, <a href="../../../../ar/com/hjg/pngj/PngReader.html#toStringCompact()">toStringCompact</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_java.lang.Object">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#wait(long, int)" title="class or interface in java.lang">wait</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="field_detail">
<!--   -->
</a>
<h3>Field Detail</h3>
<a name="actlChunk">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>actlChunk</h4>
<pre>protected&nbsp;<a href="../../../../ar/com/hjg/pngj/chunks/PngChunkACTL.html" title="class in ar.com.hjg.pngj.chunks">PngChunkACTL</a> actlChunk</pre>
</li>
</ul>
<a name="frameNum">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>frameNum</h4>
<pre>protected&nbsp;int frameNum</pre>
<div class="block">Current frame number (reading or read). First animated frame is 0. Frame -1 represents the IDAT (default image)
 when it's not part of the animation</div>
</li>
</ul>
</li>
</ul>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_detail">
<!--   -->
</a>
<h3>Constructor Detail</h3>
<a name="PngReaderApng(java.io.File)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>PngReaderApng</h4>
<pre>public&nbsp;PngReaderApng(<a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io">File</a>&nbsp;file)</pre>
</li>
</ul>
<a name="PngReaderApng(java.io.InputStream)">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>PngReaderApng</h4>
<pre>public&nbsp;PngReaderApng(<a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/io/InputStream.html?is-external=true" title="class or interface in java.io">InputStream</a>&nbsp;inputStream)</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method_detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a name="isApng()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isApng</h4>
<pre>public&nbsp;boolean&nbsp;isApng()</pre>
</li>
</ul>
<a name="advanceToFrame(int)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>advanceToFrame</h4>
<pre>public&nbsp;void&nbsp;advanceToFrame(int&nbsp;frame)</pre>
</li>
</ul>
<a name="hasExtraStillImage()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hasExtraStillImage</h4>
<pre>public&nbsp;boolean&nbsp;hasExtraStillImage()</pre>
<div class="block">True if it has a default image (IDAT) that is not part of the animation. In that case, we consider it as a
 pseudo-frame (number -1)</div>
</li>
</ul>
<a name="getApngNumFrames()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getApngNumFrames</h4>
<pre>public&nbsp;int&nbsp;getApngNumFrames()</pre>
<div class="block">Only counts true animation frames.</div>
</li>
</ul>
<a name="getApngNumPlays()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getApngNumPlays</h4>
<pre>public&nbsp;int&nbsp;getApngNumPlays()</pre>
<div class="block">0 if it's to been played infinitely. -1 if not APNG</div>
</li>
</ul>
<a name="readRow()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>readRow</h4>
<pre>public&nbsp;<a href="../../../../ar/com/hjg/pngj/IImageLine.html" title="interface in ar.com.hjg.pngj">IImageLine</a>&nbsp;readRow()</pre>
<div class="block"><strong>Description copied from class:&nbsp;<code><a href="../../../../ar/com/hjg/pngj/PngReader.html#readRow()">PngReader</a></code></strong></div>
<div class="block">Reads next row.
 
 The caller must know that there are more rows to read.</div>
<dl>
<dt><strong>Overrides:</strong></dt>
<dd><code><a href="../../../../ar/com/hjg/pngj/PngReader.html#readRow()">readRow</a></code>&nbsp;in class&nbsp;<code><a href="../../../../ar/com/hjg/pngj/PngReader.html" title="class in ar.com.hjg.pngj">PngReader</a></code></dd>
<dt><span class="strong">Returns:</span></dt><dd>Never null. Throws PngInputException if no more</dd></dl>
</li>
</ul>
<a name="hasMoreRows()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hasMoreRows</h4>
<pre>public&nbsp;boolean&nbsp;hasMoreRows()</pre>
<div class="block"><strong>Description copied from class:&nbsp;<code><a href="../../../../ar/com/hjg/pngj/PngReader.html#hasMoreRows()">PngReader</a></code></strong></div>
<div class="block">True if last row has not yet been read</div>
<dl>
<dt><strong>Overrides:</strong></dt>
<dd><code><a href="../../../../ar/com/hjg/pngj/PngReader.html#hasMoreRows()">hasMoreRows</a></code>&nbsp;in class&nbsp;<code><a href="../../../../ar/com/hjg/pngj/PngReader.html" title="class in ar.com.hjg.pngj">PngReader</a></code></dd>
</dl>
</li>
</ul>
<a name="readRow(int)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>readRow</h4>
<pre>public&nbsp;<a href="../../../../ar/com/hjg/pngj/IImageLine.html" title="interface in ar.com.hjg.pngj">IImageLine</a>&nbsp;readRow(int&nbsp;nrow)</pre>
<div class="block"><strong>Description copied from class:&nbsp;<code><a href="../../../../ar/com/hjg/pngj/PngReader.html#readRow(int)">PngReader</a></code></strong></div>
<div class="block">The row number is mostly meant as a check, the rows must be called in ascending order (not necessarily consecutive)</div>
<dl>
<dt><strong>Overrides:</strong></dt>
<dd><code><a href="../../../../ar/com/hjg/pngj/PngReader.html#readRow(int)">readRow</a></code>&nbsp;in class&nbsp;<code><a href="../../../../ar/com/hjg/pngj/PngReader.html" title="class in ar.com.hjg.pngj">PngReader</a></code></dd>
</dl>
</li>
</ul>
<a name="readRows()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>readRows</h4>
<pre>public&nbsp;<a href="../../../../ar/com/hjg/pngj/IImageLineSet.html" title="interface in ar.com.hjg.pngj">IImageLineSet</a>&lt;? extends <a href="../../../../ar/com/hjg/pngj/IImageLine.html" title="interface in ar.com.hjg.pngj">IImageLine</a>&gt;&nbsp;readRows()</pre>
<div class="block"><strong>Description copied from class:&nbsp;<code><a href="../../../../ar/com/hjg/pngj/PngReader.html#readRows()">PngReader</a></code></strong></div>
<div class="block">Reads all rows in a ImageLineSet This is handy, but less memory-efficient (except for interlaced)</div>
<dl>
<dt><strong>Overrides:</strong></dt>
<dd><code><a href="../../../../ar/com/hjg/pngj/PngReader.html#readRows()">readRows</a></code>&nbsp;in class&nbsp;<code><a href="../../../../ar/com/hjg/pngj/PngReader.html" title="class in ar.com.hjg.pngj">PngReader</a></code></dd>
</dl>
</li>
</ul>
<a name="readRows(int, int, int)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>readRows</h4>
<pre>public&nbsp;<a href="../../../../ar/com/hjg/pngj/IImageLineSet.html" title="interface in ar.com.hjg.pngj">IImageLineSet</a>&lt;? extends <a href="../../../../ar/com/hjg/pngj/IImageLine.html" title="interface in ar.com.hjg.pngj">IImageLine</a>&gt;&nbsp;readRows(int&nbsp;nRows,
                                           int&nbsp;rowOffset,
                                           int&nbsp;rowStep)</pre>
<div class="block"><strong>Description copied from class:&nbsp;<code><a href="../../../../ar/com/hjg/pngj/PngReader.html#readRows(int, int, int)">PngReader</a></code></strong></div>
<div class="block">Reads a subset of rows.
 <p>
 This method should called once, and not be mixed with <a href="../../../../ar/com/hjg/pngj/PngReader.html#readRow()"><code>PngReader.readRow()</code></a></div>
<dl>
<dt><strong>Overrides:</strong></dt>
<dd><code><a href="../../../../ar/com/hjg/pngj/PngReader.html#readRows(int, int, int)">readRows</a></code>&nbsp;in class&nbsp;<code><a href="../../../../ar/com/hjg/pngj/PngReader.html" title="class in ar.com.hjg.pngj">PngReader</a></code></dd>
<dt><span class="strong">Parameters:</span></dt><dd><code>nRows</code> - how many rows to read (default: imageInfo.rows; negative: autocompute)</dd><dd><code>rowOffset</code> - rows to skip (default:0)</dd><dd><code>rowStep</code> - step between rows to load( default:1)</dd></dl>
</li>
</ul>
<a name="readSkippingAllRows()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>readSkippingAllRows</h4>
<pre>public&nbsp;void&nbsp;readSkippingAllRows()</pre>
<div class="block"><strong>Description copied from class:&nbsp;<code><a href="../../../../ar/com/hjg/pngj/PngReader.html#readSkippingAllRows()">PngReader</a></code></strong></div>
<div class="block">Reads all the (remaining) file, skipping the pixels data. This is much more efficient that calling
 <a href="../../../../ar/com/hjg/pngj/PngReader.html#readRow()"><code>PngReader.readRow()</code></a>, specially for big files (about 10 times faster!), because it doesn't even decompress the IDAT
 stream and disables CRC check Use this if you are not interested in reading pixels,only metadata.</div>
<dl>
<dt><strong>Overrides:</strong></dt>
<dd><code><a href="../../../../ar/com/hjg/pngj/PngReader.html#readSkippingAllRows()">readSkippingAllRows</a></code>&nbsp;in class&nbsp;<code><a href="../../../../ar/com/hjg/pngj/PngReader.html" title="class in ar.com.hjg.pngj">PngReader</a></code></dd>
</dl>
</li>
</ul>
<a name="createChunkSeqReader()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createChunkSeqReader</h4>
<pre>protected&nbsp;<a href="../../../../ar/com/hjg/pngj/ChunkSeqReaderPng.html" title="class in ar.com.hjg.pngj">ChunkSeqReaderPng</a>&nbsp;createChunkSeqReader()</pre>
<div class="block"><strong>Description copied from class:&nbsp;<code><a href="../../../../ar/com/hjg/pngj/PngReader.html#createChunkSeqReader()">PngReader</a></code></strong></div>
<div class="block">called on construction time. Override if you want an alternative class</div>
<dl>
<dt><strong>Overrides:</strong></dt>
<dd><code><a href="../../../../ar/com/hjg/pngj/PngReader.html#createChunkSeqReader()">createChunkSeqReader</a></code>&nbsp;in class&nbsp;<code><a href="../../../../ar/com/hjg/pngj/PngReader.html" title="class in ar.com.hjg.pngj">PngReader</a></code></dd>
</dl>
</li>
</ul>
<a name="getFrameNum()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getFrameNum</h4>
<pre>public&nbsp;int&nbsp;getFrameNum()</pre>
<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../ar/com/hjg/pngj/PngReaderApng.html#frameNum"><code>frameNum</code></a></dd></dl>
</li>
</ul>
<a name="end()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>end</h4>
<pre>public&nbsp;void&nbsp;end()</pre>
<div class="block"><strong>Description copied from class:&nbsp;<code><a href="../../../../ar/com/hjg/pngj/PngReader.html#end()">PngReader</a></code></strong></div>
<div class="block">Reads till end of PNG stream and call <tt>close()</tt>
 
 This should normally be called after reading the pixel data, to read the trailing chunks and close the stream. But
 it can be called at anytime. This will also read the first chunks if not still read, and skip pixels (IDAT) if
 still pending.
 
 If you want to read all metadata skipping pixels, readSkippingAllRows() is a little more efficient.
 
 If you want to abort immediately, call instead <tt>close()</tt></div>
<dl>
<dt><strong>Overrides:</strong></dt>
<dd><code><a href="../../../../ar/com/hjg/pngj/PngReader.html#end()">end</a></code>&nbsp;in class&nbsp;<code><a href="../../../../ar/com/hjg/pngj/PngReader.html" title="class in ar.com.hjg.pngj">PngReader</a></code></dd>
</dl>
</li>
</ul>
<a name="getFctl()">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>getFctl</h4>
<pre>public&nbsp;<a href="../../../../ar/com/hjg/pngj/chunks/PngChunkFCTL.html" title="class in ar.com.hjg.pngj.chunks">PngChunkFCTL</a>&nbsp;getFctl()</pre>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar_bottom">
<!--   -->
</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/PngReaderApng.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../ar/com/hjg/pngj/PngReader.html" title="class in ar.com.hjg.pngj"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../ar/com/hjg/pngj/PngReaderByte.html" title="class in ar.com.hjg.pngj"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?ar/com/hjg/pngj/PngReaderApng.html" target="_top">Frames</a></li>
<li><a href="PngReaderApng.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field_summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field_detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 2014. All rights reserved.</small></p>
</body>
</html>
